package ar.edu.utn.frba.tadp.tp.grupo4.fotomultas_ui.ui;

import org.uqbar.arena.actions.MessageSend;
import org.uqbar.arena.layout.HorizontalLayout;
import org.uqbar.arena.layout.VerticalLayout;
import org.uqbar.arena.widgets.Button;
import org.uqbar.arena.widgets.Panel;
import org.uqbar.arena.widgets.tables.Column;
import org.uqbar.arena.widgets.tables.Table;
import org.uqbar.arena.windows.Window;
import org.uqbar.arena.windows.WindowOwner;
import org.uqbar.commons.utils.ApplicationContext;
import ar.edu.utn.frba.tadp.tp.grupo4.fotomultas.capturas.Captura;
import ar.edu.utn.frba.tadp.tp.grupo4.fotomultas_ui.controller.ListadoConroller;

@SuppressWarnings("serial")
public class ListadoCapturasPendientesWindow extends Window<ListadoConroller>{
	
	public ListadoCapturasPendientesWindow(WindowOwner owner) {

		super(owner, new ListadoConroller(ApplicationContext.getInstance().getHome(Captura.class)));
		this.setTitle("Listado de capturas pendientes");
	}

	@Override
	public void createContents(Panel mainPanel) {
		mainPanel.setLayout(new VerticalLayout());		

		this.createCapturasPendientesGrid(mainPanel);
		
		Panel acciones = new Panel(mainPanel).setLayout(new HorizontalLayout());
		new Button(acciones)//
			.setCaption("Ingresar Captura")
			.onClick(new MessageSend(this, ListadoConroller.INGRESAR_CAPTURA));
		
		new Button(acciones)//
			.setCaption("Asignar Captura")
			.onClick(new MessageSend(this, ListadoConroller.ASIGNAR_CAPTURA));
	}

	private void createCapturasPendientesGrid(Panel mainPanel) {
		Table<Captura> table = new Table<Captura>(mainPanel, Captura.class);
		table.bindContentsToProperty(ListadoConroller.CAPTURAS);
		table.bindSelection(ListadoConroller.CAPTURA_SELECCIONADA);
		
		new Column<Captura>(table)//
			.setTitle("TipoInfraccion")
			.setFixedSize(200)
			.bindContentsToProperty("nombreTipoInfraccion");

		new Column<Captura>(table)//
			.setTitle("Zona")
			.setFixedSize(200)
			.bindContentsToProperty("nombreZona");
		
		new Column<Captura>(table)//
			.setTitle("Image")
			.setFixedSize(150)
			.bindContentsToProperty("nombreImage");
		
		new Column<Captura>(table)//
			.setTitle("Fecha")
			.setFixedSize(100)
			.bindContentsToProperty("fechaCaptura");				
	}
	
	public void ingresarCaptura() {
		// Esto se hace desde Controller
		getModel().setParent(this);
		getModel().ingresarCaptura();
	}
	
	public void asignarCaptura() {
		// Esto se hace desde Controller
		getModel().setParent(this);
		getModel().asignarCaptura();
	}
}
